基本用法
LitePal
LitePal是一款开源的Android数据库框架,它采用了对象关系映射(ORM)的模式,LitePal很“轻”,jar包只有100k不到,使用起来也比较简单,源码地址为Github地址。
首先需要引入lib,可以通过gradle引入也可以将下载的litepal.jar包直接放入libs目录下。然后需要在assets目录下新建一个litepal.xml文件,文件名称不能随意更改,代码如下:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="demo" ></dbname>
<version value="1" ></version>
<list>
<mapping class="com.example.databasetest.model.News"></mapping>
</list>
</litepal>
用于设定数据库的名字,用于设定数据库的版本号,用于设定所有的映射模型,用于存放具体的Model类,必须是完整的类名。
然后还需要配置LitePalApplication,由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的数据库操作就都不用再传Context了。如果需要自定义application文件,只需继承LitePalApplication即可。
接下来需要创建Model类
public class News extends DataSupport {
private int id;
private String title;
private String content;
private Date publishDate;
private int commentCount;
// 自动生成get、set方法
...
}
继承了DataSupport类之后,这些实体类就拥有了进行CRUD操作的能力
News news = new News();
news.setTitle("这是一条新闻标题");
news.setContent("这是一条新闻内容");
news.setPublishDate(new Date());
news.save();
List<News> newsList = DataSupport.select("title", "content")
.where("commentcount > ?", "0")
.order("publishdate desc").find(News.class);
LitePal还提供了直接用sql原句实现查询的api方法,扩展性也比较好。
AFinal
AFinal是一个Android的orm、ioc快速开发框架,里面包含了四大功能:控件的id绑定和事件绑定功能;网络图片的显示功能(里面包含了强大的缓存框架);数据库sqlite的操作功能;http数据的读取功能(支持ajax方式读取),可从Github AFinal获取源码。数据库FinalDb是其中的一个组件,使用比较简单。
首先需要创建model类,承担对象与数据库表的映射功能。
@Table(name="table_user")
public class User {
@id
private int id;
private String name;
private String email;
private Date birth;
// getter and setter不能省略
...
}
声明@Table注解,表示表名称为table_user;@id表示id作为该表自动增长的主键,接下来就可以直接使用了。
FinalDb db = FinalDb.create(this, "afinal_db");
User user = new User();
user.setEmail("[email protected]");
user.setName("探索者");
user.setBirth(new Date());
db.save(user);
String name = "探索者";
List<User> userList = db.findAllByWhere(User.class, "name="' + name + "'" );//查询用户名为探索者的用户
if(userList.size() > 0){
User other = userList.get(0);
other.setEmail("customer@youzan.com");
db.update(other);
}
以上就是AFinal中关于数据库的简单用法,不需要额外的配置,api接口也比较简单易用。
greenDAO
greenDAO与上述两种ORM框架不同,其原理不是根据反射进行数据库的各项操作,而是一开始就人工生成业务需要的Model和DAO文件,业务中可以直接调用相应的DAO文件进行数据库操作,从而避免了因反射带来的性能损耗和效率低下。但是由于需要人工生成model和DAO文件,所以greenDAO的配置就略显复杂。
首先需要新建一个java工程来生成DAO类文件,该工程需要导入greendao-generator.jar和freemarker.jar文件到项目中,github官方源码中已经提供了该工程。
public class ExampleDaoGenerator
{
public static void main(String[] args) throws Exception
{
Schema schema = new Schema(3, "de.greenrobot.daoexample");
addNote(schema);
addCustomerOrder(schema);
new DaoGenerator().generateAll(schema, "../DaoExample/src-gen");
}